首先,前往 OpenAI 網站 (https://platform.openai.com/) 註冊帳號並取得 API Key。這個 Key 將用於我們與 OpenAI 服務之間的通訊。
在專案中新增一個腳本,例如 OpenAICommunicator.cs
,並參考以下程式碼範例:
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class OpenAICommunicator : MonoBehaviour
{
public string apiKey = "YOUR_API_KEY"; // 替換成你的 OpenAI API Key
public IEnumerator SendRequest(string prompt, System.Action<string> callback)
{
string url = "https://api.openai.com/v1/completions";
// 設定 API 請求內容
string requestBody = JsonUtility.ToJson(new
{
model = "text-davinci-003", // 選擇適合的 OpenAI 模型
prompt = prompt,
max_tokens = 50,
temperature = 0.7f // 調整回應的隨機性
});
// 建立 UnityWebRequest
using (UnityWebRequest request = UnityWebRequest.Post(url, requestBody))
{
request.SetRequestHeader("Authorization", "Bearer " + apiKey);
request.SetRequestHeader("Content-Type", "application/json");
// 發送請求並等待回應
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError("Error: " + request.error);
callback(null);
}
else
{
// 解析回應
string jsonResponse = request.downloadHandler.text;
string responseText = JsonUtility.FromJson<OpenAIResponse>(jsonResponse).choices[0].text.Trim();
callback(responseText);
}
}
}
[System.Serializable]
public class OpenAIResponse
{
public Choice[] choices;
}
[System.Serializable]
public class Choice
{
public string text;
}
}
在遊戲中,當玩家輸入指令時,我們可以使用 OpenAICommunicator
來獲取角色的回應。以下是一個簡單的示範:
public class GameController : MonoBehaviour
{
public OpenAICommunicator aiCommunicator;
public void OnPlayerInput(string playerInput)
{
StartCoroutine(aiCommunicator.SendRequest(playerInput, OnResponseReceived));
}
private void OnResponseReceived(string response)
{
if (!string.IsNullOrEmpty(response))
{
Debug.Log("AI Response: " + response);
// 在遊戲中顯示 AI 回應
}
}
}
現在,你可以在遊戲中測試角色的對話功能。根據玩家的輸入,角色將會給出相應的回應。你可以調整 temperature
和 max_tokens
參數,以獲得不同風格的回應。